#ifndef GPS2ENU_H
#define GPS2ENU_H

#include <vector>
#define M_PI    3.14159265358979323846

// WGS84椭球体的常量定义
const double WGS84_A = 6378137.0;  // 半长轴
const double WGS84_F = 1.0 / 298.257223563;  // 扁率
const double WGS84_E2 = WGS84_F * (2 - WGS84_F);  // 第一偏心率的平方

// 将WGS84坐标转换为ECEF坐标
std::vector<double> wgs84_to_ecef(double lon, double lat, double alt);

// 将ECEF坐标转换为WGS84坐标
std::vector<double> ecef_to_wgs84(double x, double y, double z);

// 将ENU坐标转换为WGS84坐标
std::vector<double> enu_to_wgs84(const std::vector<double>& enu, double ref_lon, double ref_lat, double ref_alt);

// 将WGS84坐标转换为ENU坐标
std::vector<double> wgs84_to_enu(const std::vector<double>& wgs84, double ref_lon, double ref_lat, double ref_alt);

#endif // GPS2ENU_H
